#pragma once
#include"common.h"
class ThreadCache
{
public:
	//申请空间
	void* Allocate(size_t size);
	//释放空间
	void Deallocate(void* ptr, size_t size);
	//向中心cache要内存
	void* FetchFromCentralCache(size_t index, size_t size);
	//回收到中心缓存
	void ListTooLong(FreeList& list,size_t size);
private:
	FreeList _freelist[NFREELIST];
};

//全局静态TLS
//为每一个使用该全局变量的线程都提供一个变量值的副本，每一个线程均可以独立地改变自己的副本，而不会和其它线程的副本冲突
//相当于拷贝变量到线程
static _declspec(thread) ThreadCache* pTLSThreadCache = nullptr;//static保证在当前文件可见，防止连接错误